package cn.bearspark.user.provider.dao.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 用户活跃时间的数据映射接口
 *
 * @author f
 */
@Mapper
public interface UserActiveMapper {

    /**
     * 添加用户的活跃数据
     *
     * @param id 用户的 id
     */
    @Insert("INSERT INTO t_active (user_id) VALUES (#{id})")
    void insert(long id);

    /**
     * 更新指定用户的最近活跃时间
     *
     * @param id         指定的用户 id
     * @param activeTime 最近活跃时间
     */
    @Update("UPDATE t_active SET last_active_time = #{activeTime} WHERE user_id = #{id}")
    void updateActiveTime(long id, Date activeTime);

    /**
     * 将指定用户的最近活跃时间更新为用户创建时间
     *
     * @param userId 指定的用户 id
     */
    void updateActiveTimeToCreateTime(long userId);

    /**
     * 批量更新指定用户的最近活跃时间
     *
     * @param userIdList 指定的用户 id 集合
     * @param activeTime 最近活跃时间
     */
    void updateBatchActiveTime(List<Long> userIdList, LocalDateTime activeTime);
}
